unity Android 的文件操作 |
您所在的位置:网站首页 › unity 应用程序路径不存在 › unity Android 的文件操作 |
Unity windows环境下 存在Assets/StreamingAssets目录下的文件可以直接使用路径: path= Application.streamingAssetsPath + "/" + fileName; 进行读写操作。但是在Android的环境中Assets/StreamingAssets目录下的文件只能进行读取的操作。 Android的环境中使用路径: path = Application.persistentDataPath + "/" + fileName; Application.persistentDataPath (可持久化的目录)路径中的文件可以使用windows环境的文件读写操作(文件流FileStream读写和File类的读写) 创建 public void CreateFileInPersistentData(string fileName) { string path = Application.persistentDataPath + "/" + fileName; if (File.Exists(path)) { return;//存在该文件 } else { //文件不存在 FileStream fs = new FileStream(path, FileMode.Create); fs.Close(); } }写入 public void WriteTXT(string fileName, string s)//写入String { string url = null; if (Application.platform == RuntimePlatform.Android) { url = Application.persistentDataPath + "/" + fileName; File.WriteAllText(url, s); } else if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer) { url = Application.persistentDataPath + "/" + fileName; FileStream fs = new FileStream(url, FileMode.Create); byte[] bytes = new UTF8Encoding().GetBytes(s.ToString()); fs.Write(bytes, 0, bytes.Length); fs.Close(); } }写入数组 public static void WriteTXT(string fileName, List lines)//写入数组 { string url = null; url = Application.persistentDataPath + "/" + fileName; File.WriteAllLines(url, lines.ToArray()); }读入 public string LoadTXTtoString(string fileName) { string url = Application.persistentDataPath + "/" + fileName; string s = null; if (Application.platform == RuntimePlatform.Android) { s = File.ReadAllText(url); } else if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer) { FileStream fs = new FileStream(url, FileMode.Open); byte[] bytes = new byte[100]; fs.Read(bytes, 0, bytes.Length); //将读取到的二进制转换成字符串 s = new UTF8Encoding().GetString(bytes); fs.Close(); } return s; }读入数组 public List LoadTXTtolist(string fileName) { string url = Application.persistentDataPath + "/" + fileName; List lines = new List(File.ReadAllLines(url)); return lines; }追加 public void AppendTXT(string fileName, string s)//写入String { string url = Application.persistentDataPath + "/" + fileName; FileStream fs = new FileStream(url, FileMode.Append); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(s); sw.Close(); fs.Close(); }
如需在Android环境下读写Assets/StreamingAssets的文件,一个解决办法是将Assets/StreamingAssets目录下的文件复制到Application.persistentDataPath 目录下,之后对复制后 的文件进行操作。 public void CopyFileFromStreamingAsset(string fileName) { string from_path= Application.streamingAssetsPath + "/" + fileName; string to_path = Application.persistentDataPath + "/" + fileName; WWW www = new WWW(from_path); while (!www.isDone) { } if (www.error == null) { File.WriteAllBytes(to_path, www.bytes); } }
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |